﻿Imports WSEntidades
Public Class csUtilsAddendaSR
    Private cadenaComercial As String
    Public Function ProcesaConfig(ByVal currentrow As String(), ByRef resp As List(Of RespuestaPremium)) As Boolean
        Try
            If (currentrow.Length = 5 And currentrow(0) = "08") Then
                If (currentrow(1) = "CVEADD") Then
                    If (currentrow(2) <> "" And currentrow(2) = "SR") Then
                        cadenaComercial = currentrow(3)
                        Return True
                    Else
                        ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto. Clave Incorrecta.", resp)
                        Return False
                    End If
                Else
                    ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto. La seccion 08 no contiene el indicador CVEADD", resp)
                    Return False
                End If
            Else
                ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto. La seccion 08 no corresponde con el formato especificado", resp)
                Return False
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("08", 0, ex.Message, resp)
            Return False
        End Try
    End Function
    Public Function ProcesaRemision(ByVal currentrow As String(), ByVal comprobante As Comprobante, _
                                      ByRef Resp As List(Of RespuestaPremium), _
                                      ByRef add As SR.AddSorianaReverse.DocumentoFacturaSorianaReverse, _
                                      ByVal importeIEPS As String, _
                                      ByVal importeIVA As String) As Boolean
        Try
            If (currentrow.Length = 15) Then
                add.Id = currentrow(2).Trim
                add.RowOrder = 0
                add.Proveedor = currentrow(3).Trim
                add.Remision = "temp"
                add.Consecutivo = currentrow(4).Trim
                add.FechaRemision = currentrow(5).Trim
                add.Tienda = currentrow(6).Trim
                Select Case comprobante.Moneda
                    Case "MXN"
                        add.TipoMoneda = "1"
                    Case "DLS"
                        add.TipoMoneda = "2"
                    Case "EUR"
                        add.TipoMoneda = "3"
                End Select
                add.TipoBulto = currentrow(7).Trim
                add.EntregaMercancia = currentrow(8).Trim
                add.CumpleReqFiscales = "true"
                add.CantidadBultos = currentrow(9).Trim
                add.Subtotal = comprobante.subTotal.ToString()
                add.Descuentos = comprobante.descuento.ToString()
                add.IEPS = importeIEPS
                add.IVA = importeIVA
                add.OtrosImpuestos = currentrow(10).Trim
                add.Total = comprobante.total.ToString()
                add.CantidadPedidos = currentrow(11).ToString().Trim
                add.FechaEntregaMercancia = currentrow(12).ToString().Trim
                add.Cita = currentrow(13).ToString().Trim
                add.FolioNotaEntrada = currentrow(14).ToString().Trim


                Dim Valid As New SorianaReverse
                ''Llamamos al método de validación de Karo.!
                If (Valid.isValid_Remision(Resp, add)) Then
                    Return True
                Else
                    Return False
                End If
            Else
                ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto,longitud incorrecta para sección REMISION", Resp)
                Return False
            End If

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("08", 0, ex.Message, Resp)
            Return False
        End Try
    End Function
    Public Function ProcesaPedimento(ByVal currentrow As String(), _
                                      ByRef Resp As List(Of RespuestaPremium), _
                                      ByRef add As SR.AddSorianaReverse.DocumentoFacturaSorianaReverse)
        Try
            If (currentrow.Length = 10) Then
                add.IdPedimento = currentrow(2).Trim
                add.RowOrderPedimento = "0"
                add.Pedimento = currentrow(3).Trim
                add.Aduana = currentrow(4).Trim
                add.AgenteAduanal = currentrow(5).Trim
                add.TipoPedimento = currentrow(6).Trim
                add.FechaPedimento = currentrow(7).Trim
                add.FechaReciboLaredo = currentrow(8).Trim
                add.FechaBillOfLading = currentrow(9).Trim

                Dim Valid As New SorianaReverse
                ''Lllamamos al método de validación de Karo.!
                If (Valid.isValid_Pedimento(Resp, add)) Then
                    Return True
                Else
                    Return False
                End If
            Else
                ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto,longitud incorrecta para sección PEDIMENTO", Resp)
                Return False
            End If

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("08", 0, ex.Message, Resp)
            Return False
        End Try
    End Function
    Public Function ProcesaPedido(ByVal currentrow As String(), _
                                     ByRef Resp As List(Of RespuestaPremium), _
                                     ByRef add As SR.AddSorianaReverse.DocumentoFacturaSorianaReverse, _
                                     ByVal i As Integer)
        Try
            Dim ObjPed As SR.AddSorianaReverse.Pedidos = New SR.AddSorianaReverse.Pedidos
            If (currentrow(2) <> "") Then
                If (currentrow.Length = 6) Then
                    If (currentrow(1).ToString() = "PEDIDO") Then
                        ObjPed.IdPedido = currentrow(2).Trim
                        ObjPed.RowOrderPedido = "0"
                        ObjPed.FolioPedido = currentrow(3).Trim
                        ObjPed.TiendaPedido = currentrow(4).Trim
                        ObjPed.CantidadArticulos = currentrow(5).Trim
                        If (add.FolioNotaEntrada.Trim <> "") Then
                            ObjPed.PedidoEmitidoProveedor = "SI"
                        End If
                        add.Pedidos.Add(ObjPed)
                    Else
                        ValidaCFDi.AgregaRespuesta("08", 2, "El contenido del documento TXT no es correcto, EL indicador no corresponde a PEDIDO.", Resp)
                        Return False
                    End If
                Else
                    ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto,longitud incorrecta para sección PEDIDO", Resp)
                    Return False
                End If
                Dim Valid As New SorianaReverse
                ''Llamamos al método de validación de Karo.!
                If (Valid.isValid_Pedidos(Resp, add, i)) Then
                    Return True
                Else
                    Return False
                End If
            Else
                ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto, No contiene Numero de Linea.", Resp)
                Return False
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("08", 0, ex.Message, Resp)
            Return False
        End Try
    End Function
    Public Function ProcesaArticulos(ByVal currentrow As String(), _
                                     ByVal comprobante As Comprobante, _
                                     ByRef Resp As List(Of RespuestaPremium), _
                                     ByRef add As SR.AddSorianaReverse.DocumentoFacturaSorianaReverse, _
                                     ByVal i As Integer, _
                                     ByVal currentCompr As List(Of String()))
        Try
            Dim ObjArt As SR.AddSorianaReverse.Articulos = New SR.AddSorianaReverse.Articulos
            If (currentrow(2) <> "") Then
                If (currentrow.Length = 7) Then
                    If (currentrow(1).ToString() = "ARTICULO") Then
                        ObjArt.IdArticulo = currentrow(2).Trim
                        ObjArt.RowOrderArticulo = currentrow(3).Trim
                        ObjArt.FolioPedidoArticulo = currentrow(4).Trim
                        ObjArt.TiendaArticulo = currentrow(5).Trim
                        ObjArt.Codigo = currentrow(6).Trim
                        ObjArt.CantidadUnidadCompra = comprobante.Conceptos(i).cantidad.ToString().Trim
                        ObjArt.CostoNetoUnidadCompra = comprobante.Conceptos(i).valorUnitario.ToString().Trim
                        If (currentCompr(i)(15).ToString() <> "") Then
                            If (currentCompr(i)(15).ToString().ToUpper() <> "EXENTO") Then
                                ObjArt.PorcentajeIVA = currentCompr(i)(15).ToString()
                            Else
                                ObjArt.PorcentajeIVA = "0"
                            End If
                        End If
                        If (currentCompr(i)(18).ToString() <> "") Then
                            If (currentCompr(i)(18).ToString().ToUpper() <> "EXENTO") Then
                                ObjArt.PorcentajeIEPS = currentCompr(i)(18).ToString()
                            Else
                                ObjArt.PorcentajeIEPS = "0"
                            End If
                        End If
                        add.Articulos.Add(ObjArt)
                    Else
                        Throw New Exception("El contenido del documento TXT no es correcto, EL indicador no corresponde a ARTICULO.")
                    End If
                Else
                    Throw New Exception("El contenido del documento TXT no es correcto,longitud incorrecta para sección ARTICULO")
                End If

                ' Next
                Dim Valid As New SorianaReverse
                ''Lllamamos al método de validación de Karo.!
                If (Valid.isValid_Articulos(Resp, add, i)) Then
                    Return True
                Else
                    Return False
                End If
            Else
                ValidaCFDi.AgregaRespuesta("08", 0, "El contenido del documento TXT no es correcto, No contiene Numero de Linea.", Resp)
                Return False
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("08", 0, ex.Message, Resp)
            Return False
        End Try
    End Function
End Class
